Field of the Invention
The present invention relates to the in-memory storage of data in an application server and more particularly to supporting high availability while storing application related data in-memory in an application server.
Description of the Related Art
An application server is a software system executing upon a hardware platform that exposes business logic to client applications through various protocols such as the hypertext transfer protocol (HTTP). While a Web server mainly support the transmitting of hypertext markup language (HTML) defined pages to requesting browser clients for display in a browser, an application server provides access to business logic for use by client application programs. In this regard, the application program can use supplied business logic just as it would call a method on an object internally disposed on a supporting client device.
In most cases, an application server exposes its business logic through a component application programming interface (API) and the application server manages its own resources. Therefore, the application server also provides gate-keeping services including security, transaction processing, resource pooling, and messaging. The application server also must provide performance-enhancing services such as an in-memory store. Finally, like a Web server, an application server may also support scalability and fault-tolerance including high availability.
Advanced application servers provides for in-memory storing of data to support lightning fast data access. In-memory storing can be provided globally to all logic resources of the application server, or at the container level so as to support only a subset of the instances of logic resources in the application server. Recent advances in in-memory stores for application servers utilize direct memory access (DMA) techniques. One such technique includes remote DMA. In computing, remote direct memory access (RDMA) is a direct memory access from the memory of one computer into that of another without involving either one's operating system.
Thus, RDMA permits high-throughput, low-latency networking, which is especially useful in massively parallel computer clusters. RDMA supports zero-copy networking by enabling the network adapter to transfer data directly to or from application memory, eliminating the need to copy data between application memory and the data buffers in the operating system. Such transfers require no work to be done by the central processing units (CPUs), key-value stores, or context switches, and transfers continue in parallel with other system operations. When an application performs an RDMA Read or Write request, the application data is delivered directly to the network, reducing latency and enabling fast message transfer.
Distributed key/value pair store systems that exploit one-sided RDMA such as those found in an in-memory store engine of an application server can directly read from and write to the server's memory. This direct memory access is performed by utilizing RDMA between the network adapter of the server and the memory of the server without involving the CPU or CPUs of the server. Consequently, ultra high throughput and ultra low latency results. However, high availability remains an important problem for one-sided RDMA access. Because the server processor is not involved there are no software-level hooks for high availability replication, which leaves the key-value store vulnerable to hardware failures. Further, involving the server processor even minimally can cause dramatic performance degradation, measured in millions of requests per second. Therefore software-based high availability schemes are undesirable when seeking performance through RDMA supported in-memory stores.